﻿using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class ObjectPoolerScript : MonoBehaviour {
	
	public static ObjectPoolerScript current;
	
	//objeto que se poolea
	public GameObject pooledObject;
	
	//cantidad de objetos inicializados al comienzo
	public int pooledCloudAmount = 5;

	//capacidad de crear objetos en tiempo de ejecucion
	public bool willGrow = true;

	List<GameObject> pooledObjects;
	
	void Awake()
	{
		current = this;
	}
	
	void Start()
	{
		//inicializa la lista
		pooledObjects = new List<GameObject>();
		for(int i = 0; i < pooledCloudAmount; i++)
		{
			GameObject obj = (GameObject) Instantiate(pooledObject);
			obj.SetActive(false);
			pooledObjects.Add(obj);
		}
	}

	//devuelve el primer objeto inactivo de la lista, y de no haber ninguno, instancia uno nuevo
	public GameObject GetPooledCloud()
	{
		for (int i = 0; i < pooledObjects.Count; i++) 
		{
			if (!pooledObjects[i].activeInHierarchy)
			{
				return pooledObjects[i];
			}
		}
		if (willGrow) 
		{
			GameObject obj = (GameObject) Instantiate(pooledObject);
			pooledObjects.Add (obj);
			return obj;
		}
		return null;
	}
	
}
